#ifndef GRAPHICSRESOURCES_H
#define GRAPHICSRESOURCES_H

struct ID3D10Device;

namespace mgfx
{
	class MeshManager;
	class ModelManager;
	class TextureManager;
	class ShaderManager;
	class InputLayoutManager;
	class MaterialManager;
	class StateManager;

	class GraphicsResources
	{
	public:
		static GraphicsResources * getGlobal();

		void init(ID3D10Device* device);
		void deinit();

		MeshManager * getMeshMgr();
		ModelManager * getModelMgr();
		TextureManager * getTextureMgr();
		ShaderManager * getShaderMgr();
		InputLayoutManager * getInputLayoutMgr();
		MaterialManager * getMaterialMgr();
		StateManager * getStateMgr();

	private:
		GraphicsResources();

		MeshManager * mMeshMgr;
		ModelManager * mModelMgr;
		TextureManager * mTextureMgr;
		ShaderManager * mShaderMgr;
		InputLayoutManager * mInputLayoutMgr;
		MaterialManager * mMaterialMgr;
		StateManager * mStateMgr;
	};

}

#endif